<?php
/**
 * Description of productos_model
 *
 * @author gorka
 */
class Productos_model extends APP_Model{
    var $id = 0;
    var $categoria_id = 0;
    var $marca_id = 0;
    var $genero_id = 0;
    var $referencia = NULL;
    var $descripcion = NULL;
    var $colores = NULL;
    var $creado = NULL;
    var $modificado = NULL;
    var $observaciones = NULL;

    public function getId() {
        return $this->id;
    }

    public function setId($id) {
        $this->id = $id;
    }

    public function getCategoriaId() {
        return $this->categoria_id;
    }

    public function setCategoriaId($categoria_id) {
        $this->categoria_id = $categoria_id;
    }

    public function getMarcaId() {
        return $this->marca_id;
    }

    public function setMarcaId($marca_id) {
        $this->marca_id = $marca_id;
    }

    public function getGeneroId() {
        return $this->genero_id;
    }

    public function setGeneroId($genero_id) {
        $this->genero_id = $genero_id;
    }

    public function getReferencia() {
        return $this->referencia;
    }

    public function setReferencia($referencia) {
        $this->referencia = strtoupper($referencia);
    }

    public function getDescripcion() {
        return $this->descripcion;
    }

    public function setDescripcion($descripcion) {
        $this->descripcion = ucfirst(strtolower($descripcion));
    }

    public function getColores() {
        return $this->colores;
    }

    public function setColores($color) {
        $this->colores = strtoupper($color);
    }

    public function getCreado() {
        return $this->creado;
    }

    public function setCreado($creado) {
        $this->creado = $creado;
    }

    public function getModificado() {
        return $this->modificado;
    }

    public function setModificado($modificado) {
        $this->modificado = $modificado;
    }

    public function getObservaciones() {
        return $this->observaciones;
    }

    public function setObservaciones($observaciones) {
        $this->observaciones = $observaciones;
    }

    public function __construct() {
        parent::__construct();
    }

    /**
     * Lista todos los resultados de la tabla productos, obteniendo su id y descripción
     * @return arreglo de resultados
     */
    function listAll()
    {
        $this->db->select('id, descripcion');
        $query = $this->db->get('productos');
        return $query->result_array();
    }

    /**
     * Obtiene la lista de productos paginando
     * @param $limit Limite de resultados a obtener
     * @param $start Inicio de los resultados a mostrar
     * @return arreglo de resultados
     */
    function getPaginateResult($limit,$start)
    {
        $this->db->select('p.*');
        $this->db->select('cat.id as categoria_id');
        $this->db->select('cat.nombre as categoria_nombre');
        $this->db->select('gen.id as genero_id');
        $this->db->select('gen.nombre as genero_nombre');
        $this->db->select('mar.id as marca_id');
        $this->db->select('mar.nombre as marca_nombre');
        $this->db->from('productos p');
        $this->db->join('tablas cat','p.categoria_id = cat.id');
        $this->db->join('tablas gen','p.genero_id = gen.id');
        $this->db->join('tablas mar','p.marca_id  = mar.id');
        $this->db->order_by("p.referencia");
        $this->db->limit($start,$limit);
        $query = $this->db->get();
        return $query->result_array();
    }
}
?>